<?php
	/**
	 * SolicitacaoRelotacao
	 * @author bruno
	 * Classe para gerenciar a entidade SolicitacaoRelotacao
	 */
    class SolicitacaoRelotacao extends BaseModel
    {
    	
    	protected $solicitacaorelotacaoid;
        protected $candidatovagaid;
        protected $lotacaoid;
        protected $datasolicitacao;
        protected $datarelotacao;

        const tablename = "solicitacoesrelotacao";
        const tablekey = "solicitacaorelotacaoid";
        const tablesequence = "solicitacoesrelotacao_solicitacaorelotacaoid_seq";

        public function __construct($objetoid = NULL, $candidatoid = NULL)
        {
            if ($objetoid == NULL AND $candidatoid) {
                $candidato = new Candidato($candidatoid);
                $candidatovaga = $candidato->getCandidatoVagaAtual();
                $criterio = array();
                $criterio['precondicao']  = 'candidatovagaid = ' . $candidatovaga->getTableKeyValue();
                $criterio['precondicao'] .= ' AND datarelotacao IS NULL';
                $result = $this->listar($criterio);
                
                $objetoid = NULL;
                if (pg_num_rows($result) > 0) {
                    $result = pg_fetch_object($result, 0);
                    $objetoid = $result->solicitacaorelotacaoid;
                }
            }
            parent::__construct($objetoid);
        }
        
        public function RegistrarRelotacao( $cv1, $cv2 )
        {
        	$candidatovaga1 = new CandidatoVaga($cv1);
        	$candidatovaga2 = new CandidatoVaga($cv2);
        	
        	$vaga1 = new Vaga($candidatovaga1->vagaid);
        	$vaga2 = new Vaga($candidatovaga2->vagaid);
        	
        	$lotacao1 = $vaga1->lotacaoid;
        	$lotacao2 = $vaga2->lotacaoid;
        	
        	if ( $lotacao1 == NULL OR $lotacao2 == NULL ){
        	    throw new Exception("Lotações não encontradas");
        	}
        	
        	$sql = "UPDATE " . $this->getTableName() . " 
        			SET datarelotacao = '" . date('d/m/Y') . "' 
        			WHERE solicitacaorelotacaoid IN 
        				(
        					SELECT solicitacaorelotacaoid FROM " . $this->getTableName() . " WHERE
        					(
	        					candidatovagaid = $cv1 AND 
	        					datarelotacao IS NULL AND 
	        					lotacaoid = $lotacao2 
	        				) OR  
	        				(
	        					candidatovagaid = $cv2 AND 
	        					datarelotacao IS NULL AND 
	        					lotacaoid = $lotacao1 
	        				)
	        				ORDER BY datasolicitacao DESC 
	        				LIMIT 2
	        			)";
        	
        	TSqlSelect::customSelect($sql);
        	
        }
        
    }
?>